iT邦幫忙

0

Python學習筆記: Pandas 人員亂數分組及彙整小組成員

  • 分享至 

  • xImage
  •  

本文同步發表於小弟自架網站:微確幸資訊站

原始的問題為將學生亂數分成A、B、C三組:

姓名 組別
0 黃文欣 B
1 徐翠洋 C
2 林欣虹 A
3 吳語群 B
4 詹俊宏 A
5 林素元 A
6 洪偉誠 B
7 黃玉廷 C
8 黃瓊瑞 C
9 陳奕季 B

目標是分組後的學生,新增一欄「小組成員」:

姓名 組別 小組成員
0 黃文欣 B [黃文欣, 吳語群, 洪偉誠, 陳奕季]
1 徐翠洋 C [徐翠洋, 黃玉廷, 黃瓊瑞]
2 林欣虹 A [林欣虹, 詹俊宏, 林素元]
3 吳語群 B [黃文欣, 吳語群, 洪偉誠, 陳奕季]
4 詹俊宏 A [林欣虹, 詹俊宏, 林素元]
5 林素元 A [林欣虹, 詹俊宏, 林素元]
6 洪偉誠 B [黃文欣, 吳語群, 洪偉誠, 陳奕季]
7 黃玉廷 C [徐翠洋, 黃玉廷, 黃瓊瑞]
8 黃瓊瑞 C [徐翠洋, 黃玉廷, 黃瓊瑞]
9 陳奕季 B [黃文欣, 吳語群, 洪偉誠, 陳奕季]
import pandas as pd
import numpy as np

# 先用亂數廠生的姓名做一個Dataframe
df = pd.DataFrame({'姓名':['黃文欣', '徐翠洋', '林欣虹', '吳語群', 
                         '詹俊宏', '林素元', '洪偉誠', '黃玉廷', '黃瓊瑞', '陳奕季'], 
                   })

# 準備將所有的學生做ABC的分組
group = 'ABC'

# df新增一個「組別」的欄位,由ABC亂數產生,長度為df
df["組別"] = np.random.choice(list(group), size=len(df))
df

https://ithelp.ithome.com.tw/upload/images/20221223/20122335prQ7gtVB6j.jpg

# 將df以組別來分類後,所有的姓名轉成list,並把這個序列的命名改成「小組成員」
s = df.groupby('組別').姓名.agg(list).rename('小組成員')
print(type(s))
s

https://ithelp.ithome.com.tw/upload/images/20221223/2012233560doJpuFTm.jpg

# 將原來的df串接上面做好的s
df = pd.merge(df, s, on='組別', how='left')
df

https://ithelp.ithome.com.tw/upload/images/20221223/20122335orZ8vwLaJB.jpg

這樣就完成我們的目標了!!


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言